home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 1 / Meeting Pearls Vol 1 (1994).iso / installed_progs / util / pgp / pgpamiga / source / 68000.s < prev    next >
Encoding:
Text File  |  1993-08-13  |  1.8 KB  |  85 lines

  1. ; 68000.s for SAS/asm v6.x
  2. ; register parameters, small code/small data model
  3. ; optimized version of 68000.s
  4.  
  5.         SECTION code
  6.  
  7.         XREF    _global_precision
  8.  
  9. ; r1 = r1 + r2 + carry
  10. ; boolean P_ADDC(unitptr r1, unitptr r2, boolean carry)
  11. ; D0.B           A0          A1          D0.B
  12.  
  13.         XDEF    _P_ADDC
  14. _P_ADDC:
  15.         move.l  d2,-(sp)
  16.         move.b  d0,d1
  17.         sne     d1
  18.         moveq.l #0,d2
  19.         move.w  _global_precision(a4),d2
  20.         asl.l   #2,d2
  21.         add.l   d2,a0
  22.         add.l   d2,a1
  23.         asr.l   #2,d2
  24.         subq.l  #1,d2
  25.         asr.b   #1,d1
  26. add_loop:
  27.         addx.l  -(a1),-(a0)
  28.         dbf     d2,add_loop
  29.         scs     d0
  30.         move.l  (sp)+,d2
  31.         rts
  32.  
  33. ; r1 = r1 - r2 - borrow
  34. ; boolean P_SUBB(unitptr r1, unitptr r2, boolean borrow)
  35. ; D0.B           A0          A1          D0.B
  36.  
  37.         XDEF    _P_SUBB
  38. _P_SUBB:
  39.         move.l  d2,-(sp)
  40.         move.b  d0,d1
  41.         sne     d1
  42.         moveq.l #0,d2
  43.         move.w  _global_precision(a4),d2
  44.         asl.l   #2,d2
  45.         add.l   d2,a0
  46.         add.l   d2,a1
  47.         asr.l   #2,d2
  48.         subq.l  #1,d2
  49.         asr.b   #1,d1
  50. sub_loop:
  51.         subx.l  -(a1),-(a0)
  52.         dbf     d2,sub_loop
  53.         scs     d0
  54.         move.l  (sp)+,d2
  55.         rts
  56.  
  57. ; r1 = r1 << 1 | carry;
  58. ; boolean P_ROTL(unitptr r1, boolean carry)
  59. ; D0.B           A0          D0.B
  60.  
  61.         XDEF    _P_ROTL
  62. _P_ROTL:
  63.         move.l  d2,-(sp)
  64.         move.b  d0,d1
  65.         sne     d1
  66.         moveq.l #0,d2
  67.         move.w  _global_precision(a4),d2
  68.         asl.l   #2,d2
  69.         add.l   d2,a0
  70.         asr.l   #1,d2
  71.         subq.l  #1,d2
  72.         asr.b   #1,d1
  73. rol_loop:
  74.         roxl.w  -(a0)
  75.         dbf     d2,rol_loop
  76.         scs     d0
  77.         move.l  (sp)+,d2
  78.         rts
  79.  
  80.         XDEF    @P_SETP
  81. @P_SETP:
  82.         rts
  83.  
  84.         END
  85.